// plugins/quic_plugin/quic_plugin.c
#include "plugin.h"
#include <stdio.h>
#include <stdlib.h>

// 插件信息
PluginInfo get_plugin_info_export() {
    PluginInfo info = {
        "quic_plugin", // 插件名称
        "A simple quic_plugin plugin", // 插件描述
        100 // 插件 API 版本
    };
    return info;
}

// 插件加载函数
bool plugin_load_export(PluginHandle* handle) {
    printf("quic_plugin plugin loaded.\n");
    // 分配内存保存一些插件需要用到的数据
    int* data = (int*)malloc(sizeof(int));
    if (data == NULL) {
        perror("Failed to allocate memory for quic_plugin plugin data");
        return false;
    }
    *data = 0; // 初始化数据
    *handle = (PluginHandle)data; // 使用分配的内存地址作为句柄
    return true;
}

// 插件卸载函数
bool plugin_unload_export(PluginHandle handle) {
    printf("quic_plugin plugin unloaded. Handle: %p\n", handle);
    free(handle); // 释放分配的内存
    return true;
}

// 插件启动函数
bool plugin_start_export(PluginHandle handle) {
    printf("quic_plugin plugin started. Handle: %p\n", handle);
    int* data = (int*)handle;
    printf("quic_plugin plugin data: %d\n", *data);

    // 插件启动时可以执行一些初始化操作
    (*data)++;
    return true;
}

// 插件停止函数
bool plugin_stop_export(PluginHandle handle) {
    printf("quic_plugin plugin stopped. Handle: %p\n", handle);
    return true;
}
